Туториал кусок известной субстанции. Эта способность не MUI и плодит утечки. После переменной с именем To4ka туториал нужно сразу было закрыть.
Ну а по вопросу, приложи скрины своего заклинания и опиши, что пошло не так. Не у всех есть желание/возможность запускать варкрафт.
Короче запускаю заклинание и появляются несколько снарядов вместо 3 штуки и их становится очень много , и ещё они не преследуют владельца , при повторном использования заклинание, штуки становится очень много и начинается ужасные лаги прям компьютер зависло , вообще не понимаю , все делал но что то пошло не так
((код jass
function J9O takes nothing returns nothing
local unit P8I=GetEnumUnit()
local group JAO=ND0
local unit P7I=NE0
if IsUnitInGroup(P8I,JAO)==false then
call GroupAddUnit(JAO,P8I)
call IssueTargetOrder(NF0,"slow",P8I)
set JJI=true
call DamageTarget(P7I,P8I,1,200)
set JJI=false
call DestroyEffect(AddSpecialEffectTarget("Abilities\\Spells\\Undead\\FrostNova\\FrostNovaTarget.mdl",P8I,"origin"))
endif
set P8I=null
set JAO=null
set P7I=null
endfunction
function JBO takes nothing returns boolean
local trigger t=GetTriggeringTrigger()
local integer S5I=GetHandleId(t)
local unit P7I=(LoadUnitHandle(HashData,(S5I),(2)))
local unit I01=(LoadUnitHandle(HashData,(S5I),(19)))
local group JAO=(LoadGroupHandle(HashData,(S5I),(133)))
local real d
local real x
local real x0=GetUnitX(P7I)
local real y
local real y0=GetUnitY(P7I)
local group g=NTI()
local integer NPI=GetTriggerEvalCount(t)
local integer i
call SetUnitX(I01,GetUnitX(P7I))
call SetUnitY(I01,GetUnitY(P7I))
set ND0=JAO
set NE0=P7I
set NF0=(LoadUnitHandle(HashData,(S5I),(132)))
if GetTriggerEvalCount(t)>37 then
call KillUnit(I01)
call NSI(JAO)
call FlushChildHashtable(HashData,(S5I))
call S0I(t)
else
set d=NPI*21
set i=0
loop
exitwhen i>36
set x=x0+d*Cos(360*i/36*bj_DEGTORAD)
set y=y0+d*Sin(360*i/36*bj_DEGTORAD)
set GK=P7I
call GroupEnumUnitsInRange(g,x,y,150,Condition(function C81))
call ForGroup(g,function J9O)
set i=i+1
endloop
endif
call NSI(g)
set t=null
set I01=null
set JAO=null
set P7I=null
set g=null
return false
endfunction
function JCO takes nothing returns nothing
local unit SFI=GetTriggerUnit()
local real x=GetUnitX(SFI)
local real y=GetUnitY(SFI)
local group JAO=NTI()
local trigger t=CreateTrigger()
local integer S5I=GetHandleId(t)
local unit I01=CreateUnit(GetOwningPlayer(SFI),'h091',x,y,0)
local unit JDO=CreateUnit(GetOwningPlayer(SFI),'e00E',GetUnitX(SFI),GetUnitY(SFI),0)
call UnitAddAbility(JDO,'A0T0')
call SaveGroupHandle(HashData,(S5I),(133),(JAO))
call SaveUnitHandle(HashData,(S5I),(19),(I01))
call SaveUnitHandle(HashData,(S5I),(132),(JDO))
call SaveUnitHandle(HashData,(S5I),(2),(SFI))
call TriggerRegisterTimerEvent(t,0.06,true)
call TriggerAddCondition(t,Condition(function JBO))
set t=null
set JAO=null
set I01=null
set JDO=null
set SFI=null
endfunction
function JEO takes nothing returns nothing
if GetSpellAbilityId()=='A0T9' then
call JCO()
endif
endfunction
))
Так стоп.. а где здесь
Событие?
Условие?
Действия???
((код jass
function J9O takes nothing returns nothing
local unit P8I=GetEnumUnit()
local group JAO=ND0
local unit P7I=NE0
if IsUnitInGroup(P8I,JAO)==false then
call GroupAddUnit(JAO,P8I)
call IssueTargetOrder(NF0,"slow",P8I)
set JJI=true
call DamageTarget(P7I,P8I,1,200)
set JJI=false
call DestroyEffect(AddSpecialEffectTarget("Abilities\\Spells\\Undead\\FrostNova\\FrostNovaTarget.mdl",P8I,"origin"))
endif
set P8I=null
set JAO=null
set P7I=null
endfunction
function JBO takes nothing returns boolean
local trigger t=GetTriggeringTrigger()
local integer S5I=GetHandleId(t)
local unit P7I=(LoadUnitHandle(HashData,(S5I),(2)))
local unit I01=(LoadUnitHandle(HashData,(S5I),(19)))
local group JAO=(LoadGroupHandle(HashData,(S5I),(133)))
local real d
local real x
local real x0=GetUnitX(P7I)
local real y
local real y0=GetUnitY(P7I)
local group g=NTI()
local integer NPI=GetTriggerEvalCount(t)
local integer i
call SetUnitX(I01,GetUnitX(P7I))
call SetUnitY(I01,GetUnitY(P7I))
set ND0=JAO
set NE0=P7I
set NF0=(LoadUnitHandle(HashData,(S5I),(132)))
if GetTriggerEvalCount(t)>37 then
call KillUnit(I01)
call NSI(JAO)
call FlushChildHashtable(HashData,(S5I))
call S0I(t)
else
set d=NPI*21
set i=0
loop
exitwhen i>36
set x=x0+d*Cos(360*i/36*bj_DEGTORAD)
set y=y0+d*Sin(360*i/36*bj_DEGTORAD)
set GK=P7I
call GroupEnumUnitsInRange(g,x,y,150,Condition(function C81))
call ForGroup(g,function J9O)
set i=i+1
endloop
endif
call NSI(g)
set t=null
set I01=null
set JAO=null
set P7I=null
set g=null
return false
endfunction
function JCO takes nothing returns nothing
local unit SFI=GetTriggerUnit()
local real x=GetUnitX(SFI)
local real y=GetUnitY(SFI)
local group JAO=NTI()
local trigger t=CreateTrigger()
local integer S5I=GetHandleId(t)
local unit I01=CreateUnit(GetOwningPlayer(SFI),'h091',x,y,0)
local unit JDO=CreateUnit(GetOwningPlayer(SFI),'e00E',GetUnitX(SFI),GetUnitY(SFI),0)
call UnitAddAbility(JDO,'A0T0')
call SaveGroupHandle(HashData,(S5I),(133),(JAO))
call SaveUnitHandle(HashData,(S5I),(19),(I01))
call SaveUnitHandle(HashData,(S5I),(132),(JDO))
call SaveUnitHandle(HashData,(S5I),(2),(SFI))
call TriggerRegisterTimerEvent(t,0.06,true)
call TriggerAddCondition(t,Condition(function JBO))
set t=null
set JAO=null
set I01=null
set JDO=null
set SFI=null
endfunction
function JEO takes nothing returns nothing
if GetSpellAbilityId()=='A0T9' then
call JCO()
endif
endfunction
))
Ухты , а где его нужно вводить? В какую программу?
Super cool, я тебе так обрисую в чем тут проблема. Сделать кастомный снаряд, который будет пролетать вперед задевая врагов и потом возвращаться - не сложно. Вся фишка в том как именно ты будешь это применять. Если это делается для конкретного скилла - не проблема, делаем всё как сказано и всё работает. Но ты же хочешь привязать это к авто-атаке здания, и при этом таких зданий у тебя может быть много, и они будут постоянно совершать атаки... Это неминуемо грозит довольно высокой нагрузкой (но что есть "высокая" в сравнении параметров железа).
Т.е. я предлагаю тебе отказаться от именно такой концепции реализации.
Понятно , большое спасибо за совет , тогда буду брать другой пример
Нет , ты не правильно понял, типо например сюрикен баллисты , он должен стрелятб в точку и от туда же должен обратно пойти задевая врагов , на триггере такое можно делать?
» WarCraft 3 / Не работает способность
» WarCraft 3 / Как делать заклинание Arctic Blast из доты
Событие?
Условие?
Действия???
» WarCraft 3 / Выпадение предмета от юнита
» WarCraft 3 / Как делать заклинание Arctic Blast из доты
» WarCraft 3 / Как делать бумеранг?
» WarCraft 3 / Как делать бумеранг?
» WarCraft 3 / Полезная информация